Android App - Sharif University CTF 2016
#Sharif_University_CTF_2016
apkファイルが配布される
jadxでデコンパイルすると以下の関数が見つかる
IsCorrect() == trueの場合にprocessObjectArrayFromNative()の戻り値のMD5ハッシュ値をとってフラグの形で表示する
どちらもネイティブメソッドなのでコードを読む
code:java
@Override // android.view.View.OnClickListener
public void onClick(View view) {
new String(" ");
String editable = this.a.b.getText().toString();
Log.v("EditText", this.a.b.getText().toString());
new String("");
int processObjectArrayFromNative = this.a.processObjectArrayFromNative(editable);
int IsCorrect = this.a.IsCorrect(editable);
String str = String.valueOf(this.a.d + processObjectArrayFromNative) + " ";
try {
MessageDigest instance = MessageDigest.getInstance("MD5");
instance.update(str.getBytes());
byte[] digest = instance.digest();
StringBuffer stringBuffer = new StringBuffer();
for (byte b : digest) {
stringBuffer.append(Integer.toString((b & 255) + 256, 16).substring(1));
}
if (IsCorrect == 1 && this.a.e != "unknown") {
this.a.c.setText("Sharif_CTF(" + stringBuffer.toString() + ")");
}
if (IsCorrect == 1 && this.a.e == "unknown") {
this.a.c.setText("Just keep Trying :-)");
}
if (IsCorrect == 0) {
this.a.c.setText("Just keep Trying :-)");
}
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
}
IsCorrect()を読むとstrcmp()で引数とef57f3fe3cf603c03890ee588878c0ecを比較している
エミュレータでapkを実行してこれを入力すれば良さそう
バージョンが古すぎてエミュレータで動かなかったので終わり